import sys
from PyQt6.QtWidgets import (
    QApplication, QMainWindow, QWidget, QVBoxLayout,
    QPushButton, QTabWidget, QStatusBar, QMenuBar, QMessageBox
)
from PyQt6.QtGui import QIcon, QFont, QAction
from PyQt6.QtCore import QTimer, QTime

# 导入各个标签页模块
from widgets_tab import WidgetsTab
from layouts_tab import LayoutsTab
from signals_tab import SignalsTab
from dialogs_tab import DialogsTab
from advanced_tab import AdvancedTab

class PyQt6Guide(QMainWindow):
    """PyQt6 使用指南主窗口"""
    
    def __init__(self):
        super().__init__()
        
        # 设置主窗口属性
        self.setWindowTitle("PyQt6 使用指南")
        self.setGeometry(100, 100, 900, 700)
        self.setWindowIcon(QIcon("icon.png"))  # 替换为你的图标路径
        
        # 创建菜单栏
        self.create_menu()
        
        # 创建状态栏
        self.status_bar = QStatusBar()
        self.setStatusBar(self.status_bar)
        self.status_bar.showMessage("就绪")
        
        # 创建主部件和布局
        central_widget = QWidget()
        self.setCentralWidget(central_widget)
        main_layout = QVBoxLayout(central_widget)
        
        # 创建标签页
        self.tabs = QTabWidget()
        main_layout.addWidget(self.tabs)
        
        # 初始化各个标签页
        self.init_tabs()
        
        # 添加退出按钮
        exit_button = QPushButton("退出程序")
        exit_button.clicked.connect(self.close)
        exit_button.setStyleSheet("background-color: #ff6b6b; color: white; font-weight: bold;")
        main_layout.addWidget(exit_button)
        
        # 创建定时器更新状态栏时间
        self.status_timer = QTimer()
        self.status_timer.timeout.connect(self.update_statusbar)
        self.status_timer.start(1000)  # 每秒更新一次
    
    def init_tabs(self):
        """初始化所有标签页"""
        # 基本组件标签页
        widgets_tab = WidgetsTab()
        self.tabs.addTab(widgets_tab.create_tab(), "基本组件")
        
        # 布局管理标签页
        layouts_tab = LayoutsTab()
        self.tabs.addTab(layouts_tab.create_tab(), "布局管理")
        
        # 信号与槽标签页
        signals_tab = SignalsTab(self.status_bar)
        self.tabs.addTab(signals_tab.create_tab(), "信号与槽")
        
        # 对话框标签页
        dialogs_tab = DialogsTab(self, self.status_bar)
        self.tabs.addTab(dialogs_tab.create_tab(), "对话框")
        
        # 高级功能标签页
        advanced_tab = AdvancedTab(self.status_bar)
        self.tabs.addTab(advanced_tab.create_tab(), "高级功能")
    
    def create_menu(self):
        """创建菜单栏"""
        menubar = self.menuBar()
        
        # 文件菜单
        file_menu = menubar.addMenu("文件")
        
        new_action = QAction("新建", self)
        new_action.setShortcut("Ctrl+N")
        file_menu.addAction(new_action)
        
        open_action = QAction("打开", self)
        open_action.setShortcut("Ctrl+O")
        open_action.triggered.connect(self.open_file)
        file_menu.addAction(open_action)
        
        save_action = QAction("保存", self)
        save_action.setShortcut("Ctrl+S")
        file_menu.addAction(save_action)
        
        file_menu.addSeparator()
        
        exit_action = QAction("退出", self)
        exit_action.setShortcut("Ctrl+Q")
        exit_action.triggered.connect(self.close)
        file_menu.addAction(exit_action)
        
        # 编辑菜单
        edit_menu = menubar.addMenu("编辑")
        edit_menu.addAction("复制")
        edit_menu.addAction("粘贴")
        edit_menu.addAction("剪切")
        
        # 帮助菜单
        help_menu = menubar.addMenu("帮助")
        about_action = QAction("关于", self)
        about_action.triggered.connect(self.show_about)
        help_menu.addAction(about_action)
    
    def update_statusbar(self):
        """更新状态栏时间显示"""
        current_time = QTime.currentTime().toString("hh:mm:ss")
        self.status_bar.showMessage(f"就绪 | 当前时间: {current_time}")
    
    def open_file(self):
        """打开文件菜单处理"""
        self.status_bar.showMessage("打开文件菜单被点击", 2000)
    
    def show_about(self):
        """显示关于对话框"""
        QMessageBox.about(self, "关于 PyQt6 指南", 
            "这是一个 PyQt6 使用指南示例程序\n\n"
            "展示了 PyQt6 的基本组件、布局、信号槽机制以及常用功能。\n\n"
            "版本: 2.0 (模块化版本)\n"
            "作者: Aiden")

def main():
    """主函数"""
    app = QApplication(sys.argv)
    
    # 设置应用样式
    app.setStyle("Fusion")
    
    # 设置全局字体
    font = QFont("Arial", 10)
    app.setFont(font)
    
    # 创建并显示主窗口
    window = PyQt6Guide()
    window.show()
    
    # 运行应用
    sys.exit(app.exec())

if __name__ == "__main__":
    main()